home *** CD-ROM | disk | FTP | other *** search
/ Mission 3 / Mission 3.zip / Mission 3.iso / zugabe / va45 / visual45 / library / extend / fsel_upd.s < prev    next >
Text File  |  1998-08-03  |  5KB  |  174 lines

  1. ;------------------------------------------------------------------------------
  2. ; Method name : -
  3. ; Asm label   : GWVA_CALL_FSEL_CP_BSS_UPDATE_FORM
  4. ; Description : appelle un sélecteur de fichier et update un buffer
  5. ;        + option : copie le résultat vers un objet texte dans formulaire
  6. ;
  7. ; in  : a0.l = pointeur sur le texte d'invitation (terminé par un 0.b) : 35 chars max.
  8. ; in  : a1.l = masque pour les types fichiers à afficher : 18 caractères max
  9. ; in  : a2.l = pointeur sur un éventuel ancien pathname : "A:\TEMP\" ou sinon #0.l
  10. ; in  : a3.l = pointeur sur le BSS à remplir avec le retour du fsel (ou 0.l si pas)
  11. ; in  : a4.l = pointeur sur la structure de la fenêtre où est l'objet à redessiner
  12. ; in  : d0.w = numéro du formulaire où se trouve le texte à remplir pour update
  13. ;       graphique ou -1.w si pas d'update (d1+d2 inutilisés dans ce cas)
  14. ; in  : d1.w = numéro de l'objet de famille text à remplir avec le contenu en
  15. ;       faisant attention de ne pas dépasser.
  16. ; in  : d2.w = si long nouveau nom > longueur prévue dans le form :
  17. ;       GWVA_CFCBUF_ALIGN_LEFT    = alignement à gauche (PATH.......)
  18. ;       GWVA_CFCBUF_ALIGN_RIGHT   = alignement à droite (.......PATH)
  19. ;       GWVA_CFCBUF_ALIGN_CENTER  = centé               (PATH...NAME)
  20. ; in  : d3.w = quoi recopier ? en retour du file_selector
  21. ;       GWVA_CFCBUF_COPY_NAME     = recopier le nom (8+3) uniquement
  22. ;       GWVA_CFCBUF_COPY_PATH     = recopier le path uniquement
  23. ;       GWVA_CFCBUF_COPY_PATHNAME = recopie tout le pathname
  24. ; out : d7.w = code retour du fsel (0 si annule, <0 pour erreur, >0 pour OK)
  25. ;
  26. ; 23/05/98 : Création
  27. ;------------------------------------------------------------------------------
  28. GWVA_CALL_FSEL_CP_BSS_UPDATE_FORM:
  29.  
  30.     save.l d0-d3/a3/a4
  31.     bsr GWVA_FILE_SELECTOR
  32.     move d0,d7
  33.     load.l d0-d3/a3/a4
  34.  
  35.     tst d7
  36.     ble .annule_ou_erreur
  37.  
  38.     cmp.w #GWVA_CFCBUF_COPY_NAME,d3
  39.     bne.s .pas83
  40.     move.l a0,a2        ; nom en 8+3
  41.     bra.s .do_copy
  42. .pas83:    cmp #GWVA_CFCBUF_COPY_PATH,d3
  43.     bne.s .do_copy
  44.     move.l a1,a2        ; pathname
  45. .do_copy:    save.l a2
  46.     cmp.l #0,a3            ; pas de copie vers un BSS
  47.     beq.s .no_copy
  48. .copy0:    move.b (a2)+,(a3)+
  49.     bne.s .copy0
  50. .no_copy:    load.l a1            ; a1 => info copiée va resservir
  51.  
  52.     cmp.w #-1,d0
  53.     beq.s .no_graphic_update
  54.  
  55.     move.l a4,a0
  56.     move #GWVA_CFCBUF_REDRAW_YES,d3
  57.     bsr GWVA_NO_FSEL_CP_BSS_UPDATE_FORM
  58.  
  59. .no_graphic_update:
  60.     clr d7
  61.  
  62. .annule_ou_erreur:
  63.     rts
  64.  
  65. ;------------------------------------------------------------------------------
  66. ; Method name : -
  67. ; Asm label   : GWVA_NO_FSEL_CP_BSS_UPDATE_FORM
  68. ; Description : copie un path(name) dans un formulaire avec alignement
  69. ;        + redraw éventuel
  70. ;
  71. ; in  : a0.l = pointeur sur la structure de la fenêtre où est l'objet à redessiner (ne sert pas si pas de redraw)
  72. ; in  : a1.l = pointeur sur le buffer source pour la recopie dans le formulaire
  73. ; in  : d0.w = numéro du formulaire où se trouve le texte à remplir pour update
  74. ;       graphique ou -1.w si pas d'update (d1+d2 inutilisés dans ce cas)
  75. ; in  : d1.w = numéro de l'objet de famille text à remplir avec le contenu en
  76. ;       faisant attention de ne pas dépasser.
  77. ; in  : d2.w = si long nouveau nom > longueur prévue dans le form :
  78. ;       GWVA_CFCBUF_ALIGN_LEFT    = alignement à gauche (PATH.......)
  79. ;       GWVA_CFCBUF_ALIGN_RIGHT   = alignement à droite (.......PATH)
  80. ;       GWVA_CFCBUF_ALIGN_CENTER  = centé               (PATH...NAME)
  81. ; in  : d3.w = doit on faire un redraw ?
  82. ;       GWVA_CFCBUF_REDRAW_YES = oui
  83. ;       GWVA_CFCBUF_REDRAW_NO  = non
  84. ; out : d7.w = code retour du fsel (0 si annule, <0 pour erreur, >0 pour OK)
  85. ;
  86. ; 23/05/98 : Création
  87. ;------------------------------------------------------------------------------
  88. GWVA_NO_FSEL_CP_BSS_UPDATE_FORM:
  89.  
  90.     save.l d1/d2/d3/a0/a1            ; d0=père d1=fils
  91.     bsr GWVA_RSC_RETURN_PTR_ON_TEXT
  92.     move.w ([a0,ob_spec],te_txtlen),d4        ; longueur du texte
  93.     subq #1,d4                ; moins le 0
  94.     load.l d0/d2/d3/a0/a2
  95.  
  96.     move.l a2,a3
  97.     move #-1,d1
  98. .compte:    add #1,d1
  99.     tst.b (a3)+
  100.     bne.s .compte
  101.  
  102.     cmp d4,d1
  103.     ble.s .inf_taille_max
  104.  
  105.     cmp #GWVA_CFCBUF_ALIGN_LEFT,d2
  106.     beq.s .alignement_gauche
  107.  
  108.     cmp #GWVA_CFCBUF_ALIGN_RIGHT,d2
  109.     beq.s .alignement_droite
  110.  
  111. .centre:    move d4,d2
  112.     lsr.w #1,d2
  113.     move d2,d5
  114.     subq #1,d5
  115.     move.l a2,a3
  116. .cp_gauche:    move.b (a3)+,(a1)+
  117.     dbf d5,.cp_gauche
  118.     move.b #'~',(a1)+
  119.  
  120.     add.w d1,a2
  121.  
  122.     move d4,d1            ; copie max
  123.     sub d2,d1            ; moins deja copié
  124.     sub #1,d1            ; moins "~"
  125.  
  126.     sub.w d1,a2
  127.  
  128.     bra.s .do_the_copy
  129.  
  130. .alignement_gauche:
  131.     move d4,d1            ; copie max
  132.     sub #1,d1            ; moins "~"
  133.  
  134.     move.b #'~',0(a1,d1.w)
  135.     bra.s .do_the_copy
  136.  
  137. .alignement_droite:
  138.     move.b #'~',(a1)+
  139.  
  140.     add.w d1,a2
  141.  
  142.     move d4,d1            ; copie max
  143.     sub #1,d1            ; moins "~"
  144.  
  145.     sub.w d1,a2
  146.     bra.s .do_the_copy
  147.  
  148. .inf_taille_max:
  149.     clr.b 0(a1,d1.w)
  150.  
  151. .do_the_copy:
  152.     subq #1,d1
  153.     bmi.s .nothing2copy
  154.  
  155. .cp:    move.b (a2)+,(a1)+
  156.     dbf d1,.cp
  157.  
  158. .nothing2copy:
  159.     cmp.w #GWVA_CFCBUF_REDRAW_NO,d3
  160.     beq.s .no_wind_redraw
  161.  
  162.     lea GWVA_FSEL_UPD_TMP_OBJ_LIST,a1
  163.     move.w d0,(a1)
  164.     move.w #1,2(a1)
  165.     move.w #GWVA_WRSC_CTE_REDRAW_PART_END_LIST,4(a1)
  166.     GWVA_CALL_METHOD_OTHER_OBJ    #GWVA_METHOD_WRSC_REDRAW_PART_CONTENTS
  167.  
  168. .no_wind_redraw:
  169.     rts
  170.  
  171.  BSS
  172. GWVA_FSEL_UPD_TMP_OBJ_LIST:    ds.w 2+1
  173.  TEXT
  174.